/*
 * @# FollowService.java 2011-12-22 下午04:31:10
 * 
 * Copyright (C) 2010 - 2011 广州羿安信息科技有限公司
 * Guangzhou ianswer information technology co. ltd.
 * 
 * All rights reserved!
 */
package com.ianswer.px.user.service;

import java.util.List;

import com.ianswer.px.user.entity.Circle;
import com.ianswer.px.user.entity.UserBaseInfo;
import com.ianswer.px.user.entity.Follow;

/**
 * @author pananz
 */
public interface FollowService {

	/**
	 * 关注
	 * @param follow
	 * @param circleId
	 */
	void insert(Long who, Long whom);

	/**
	 * 取消关注
	 * @param who
	 * @param whom
	 */
	void delete(Long who, Long whom);

	/**
	 * 修改某一关注下的被关注人所在圈子
	 * @param follow
	 */
	void updateCircles(Follow follow);

	/**
	 * 取得某一关注
	 * @param who关注人编号
	 * @param whom被关注的人编号
	 * @return
	 */
	Follow get(Long who, Long whom);

	/**
	 * 取得某一人的粉丝信息
	 * @param whom
	 * @param skip
	 * @param max
	 * @return
	 */
	List<UserBaseInfo> queryFans(Long whom, int skip, int max);

	/**
	 * 取得某一人的关注信息并设置所属圈
	 * @param who
	 * @param circles
	 * @param skip
	 * @param max
	 * @return
	 */
	List<UserBaseInfo> queryFollow(Long who, List<Circle> circles, int skip, int max);

	/**
	 * 取得某一人的关注信息
	 * @param who
	 * @param skip
	 * @param max
	 * @return
	 */
	List<UserBaseInfo> queryFollow(Long who, int skip, int max);

	/**
	 * 取得某一人的粉丝编号集合
	 * @param whom
	 * @return
	 */
	List<Long> queryFansId(Long whom);

	/**
	 * 相互关注
	 * @param who
	 * @param skip
	 * @param max
	 * @return
	 */

	List<UserBaseInfo> queryMutual(Long who, List<Circle> circles, int skip, int max);

	/**
	 * 某一圈内的关注
	 * @param circleId
	 * @param userId
	 * @param skip
	 * @param max
	 * @return
	 */
	List<UserBaseInfo> queryFollowByCircle(Long circleId, Long userId, List<Circle> circles, int skip, int max);

	/**
	 * 共同关注
	 * @param who
	 * @param userId
	 * @param skip
	 * @param max
	 * @return
	 */
	List<UserBaseInfo> queryCommon(Long she, Long me, int skip, int max);
}
